// 购物车逻辑代码


// 0. 获取元素
const cartBox = document.querySelector('.cart')

// 0. 准备变量
const id = window.sessionStorage.getItem('id')


// 1. 验证登录
testLogin()
async function testLogin() {
  // 1 - 2. 判断 token 和 id 没有
  const res1 = await $.ajax({
    url: '/users/info/'+ id,
    // data: { id }
  })
  if (res1.code === 0) {
    // 记录一个标识符放在 sessionStorage 内
    // 标记我是从哪一个页面跳转到的 登录页
    window.sessionStorage.setItem('page', 'cart')
    // 跳转会登录页面
    window.location.href = '/pages/login'
    return
  }
  // 1 - 3. 发送请求, 请求个人信息
  // 因为个人信息需要登录后才能访问, 而且本页面也需要个人信息渲染
  const res = await $.ajax({
    url: '/cart/list',
    data: { id }
  })

  bindHtml(res)
}
// 1-5. 获取列表成功
// 渲染页面


// 2. 渲染页面
function bindHtml(res) {
  // 算数
  let selectNum = 0, selectPrice = 0, selected = 0
  res.cart.forEach(item => {
    if (item.is_select) {
      selected++
      selectNum += item.cart_number - 0
      selectPrice += item.current_price * item.cart_number
    }
  })

  cartBox.innerHTML = template('cart_template', { selectPrice, selectNum, selected, list: res.cart })
}

// 3. 点击事件
cartBox.addEventListener('click', handler)
async function handler(e) {
  const t = e.target

  // 判断
  if (t.className === 'select_all') {
    // 全选
    const res = await $.ajax({
      url: '/cart/select/all',
      data: { id, type: t.checked ? 1 : 0 },
    })
    testLogin()
  }

  if (t.className === 'item_del') {
    const goodsId = t.dataset.id
    const res = await $.ajax({
      url: '/cart/remove',
      data: { id, goodsId }
    })

    testLogin()
  }

  if (t.className === 'item_add') {
    const goodsId = t.dataset.id
    const number = t.previousElementSibling.value - 0 + 1
    const res = await $.ajax({
      url: '/cart/number',
      data: { id, goodsId, number },
      method: 'POST'
    })
    testLogin()
  }

  if (t.className === 'item_sub') {
    const goodsId = t.dataset.id
    const number = t.nextElementSibling.value - 1
    const res = await $.ajax({
      url: '/cart/number',
      data: { id, goodsId, number },
      method: 'POST'
    })
    testLogin()
  }
  if (t.className === 'select_item') {
    const goodsId = t.dataset.id
    const res = await $.ajax({
      url: '/cart/select',
      data: { id, goodsId }
    })
    testLogin()
  }
  if (t.className === 'clear_completed') {
    const res = await $.ajax({
      url: '/cart/clearcompleted',
      data: { id }
    })
    testLogin()
  }
  if (t.className === 'clear') {
    const res = await $.ajax({
      url: '/cart/clear',
      data: { id }
    })
    testLogin()
  }
  if (t.className === 'pay') {
    alert('  ...  正在跳转支付页面，请稍等  ...')
  }
}
